<template>
	<view>
		<view class="login">
			<view class="img">
				<image src="../../static/login.png" mode=""></image>
			</view>
			<view class="login-put">
				<view class="username">
					<input type="number" placeholder="账号" v-model="username" maxlength="6" />
				</view>
				<view class="password">
					<input type="password" placeholder="密码" v-model="password" maxlength="10" />
				</view>
			</view>

			<view class="login-btn">

				<button @tap="bindLogin"> 登录 </button>

			</view>

			<view class="tip">
				<view class="forget-register">
					<navigator url="../forgetpass/forgetpass">
						<view>忘记密码</view>
					</navigator>

					<view>|</view>

					<navigator url="../register/register">
						<view>注册账号</view>
					</navigator>
				</view>
			</view>

		</view>
	</view>

</template>

<script>
	
	import service from '../../service.js';
	import {
		mapState,
		mapMutations
	} from 'vuex'
	import mInput from '../../components/m-input.vue'

	export default {
		components: {
			mInput
		},
		data() {
			return {
				providerList: [],
				hasProvider: false,
				username: '',
				password: '',
				positionTop: 0,
				isDevtools: false,
			}
		},
		computed: mapState(['forcedLogin']),
		methods: {
			...mapMutations(['login']),

			initPosition() {
				/**
				 * 使用 absolute 定位，并且设置 bottom 值进行定位。软键盘弹出时，底部会因为窗口变化而被顶上来。
				 * 反向使用 top 进行定位，可以避免此问题。
				 */
				this.positionTop = uni.getSystemInfoSync().windowHeight - 100;
			},
			bindLogin() {
				/**
				 * 客户端对账号信息进行一些必要的校验。
				 * 实际开发中，根据业务需要进行处理，这里仅做示例。
				 */
				if (this.username.length < 6) {
					uni.showToast({
						icon: 'none',
						title: '账号最短为 6 个字符'
					});
					return;
				}
				if (this.password.length < 10) {
					uni.showToast({
						icon: 'none',
						title: '密码最短为 10 个字符'
					});
					return;
				}
				/**
				 * 下面简单模拟下服务端的处理
				 * 检测用户账号密码是否在已注册的用户列表中
				 * 实际开发中，使用 uni.request 将账号信息发送至服务端，客户端在回调函数中获取结果信息。
				 */
				const data = {
					username: this.username,
					password: this.password
				};
				const validUser = service.getUsers().some(function(user) {
					return data.username === user.username && data.password === user.password;
				});
				if (validUser) {
					console.log(this.username)
					this.toMain(this.username);
				} else {
					uni.showToast({
						icon: 'none',
						title: '用户账号或密码不正确',
					});
				}
			},
			getUserInfo({
				detail
			}) {
				if (detail.userInfo) {
					this.toMain(detail.userInfo.nickName);
				} else {
					uni.showToast({
						icon: 'none',
						title: '登陆失败'
					});
				}
			},
			toMain(userName) {
				this.login(userName);
				/**
				 * 强制登录时使用reLaunch方式跳转过来
				 * 返回首页也使用reLaunch方式
				 */
				if (this.forcedLogin) {
					uni.reLaunch({
						url: '../Home/Home',
					});
				} else {
					uni.navigateBack();
				}

			}
		},
		onReady() {
			this.initPosition();
		}
	}
</script>

<style>
	.img image {
		width: 200rpx;
		height: 200rpx;
		margin: 20rpx 280rpx 0 280rpx;
	}

	.login-put input {
		background-color: #e7e7e7;
		width: 80%;
		height: 100rpx;
		border-radius: 50rpx;
		margin: 20rpx auto;
		padding: 0 20rpx;
	}

	.login-btn button {
		background-color: #28d16c;
		width: 80%;
		margin: 60rpx auto;
	}

	.tip>view {
		width: 100%;
		display: flex;
		color: #a8a8a8;
		font-size: 25rpx;
		float: left;
		margin: 0 280rpx;
	}
</style>